package com.woniuxy.utils;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: 马宇航
 * @Todo: 字符串转日期的工具类
 * @DateTime: 22/01/25/0025 上午 11:03
 * @Component: 成都蜗牛学苑
 **/
public class String2Date implements Converter<String, Date> {
    /**
     * @Todo: 传入一个字符串日期格式，转换成日期类型
     * ChangeLog : 1. 创建 (22/01/25/0025 上午 11:05 [马宇航]);
     * @param source 2019-08-02  也可以是2018/02/11 也可以是 2018 02 19
     *              加上时间：yyyy/MM/dd'T'HH:mm:ss
     * @return java.util.Date
    */
    @Override
    public Date convert(String source) {
        if("".equals(source)||source == null){
            return null;
        }
        System.out.println("源日期格式是"+source);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy/MM/dd");
        SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy MM dd");
        SimpleDateFormat simpleDateFormat4 = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm");
        try {
            //解析yyyy-MM-dd
            Date parse = simpleDateFormat4.parse(source);
            return parse;
        } catch (ParseException e) {
            try {
                //解析yyyy/MM/dd
                Date parse = simpleDateFormat2.parse(source);
                return parse;
            } catch (ParseException ex) {
                try {
                   //解析 yyyy MM dd
                   Date parse = simpleDateFormat3.parse(source);
                   return parse;
                } catch (ParseException exc) {
                    try {
                        Date parse = simpleDateFormat.parse(source);
                        return parse;
                    } catch (ParseException parseException) {
                        parseException.printStackTrace();
                    }
                    exc.printStackTrace();
                }
                ex.printStackTrace();
            }
            e.printStackTrace();
        }

        return null;
    }
}
